home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 15
/
Aminet 15 - Nov 1996.iso
/
Aminet
/
dev
/
basic
/
ace24dist.lha
/
ace24.lha
/
include
/
graphics
/
GELS.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-09-10
|
10KB
|
307 lines
#ifndef GRAPHICS_GELS_H
#define GRAPHICS_GELS_H 1
/*
** gels.h for ACE Basic
**
** Note: Translated to ACE by ConvertC2ACE
** @ MapMeadow Software, Nils Sjoholm
**
**
** Date: 09/01/95
**
**
*/
/*
** This are the StructPointer defines for gels.h
*/
#ifndef AnimCompPtr
#define AnimCompPtr ADDRESS
#endif
#ifndef AnimObPtr
#define AnimObPtr ADDRESS
#endif
#ifndef BobPtr
#define BobPtr ADDRESS
#endif
#ifndef DBufPacketPtr
#define DBufPacketPtr ADDRESS
#endif
#ifndef VSpritePtr
#define VSpritePtr ADDRESS
#endif
#ifndef collTablePtr
#define collTablePtr ADDRESS
#endif
/*
** End of StructPointer defines for gels.h
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
/* VSprite flags */
/* user-set VSprite flags: */
#define SUSERFLAGS &H00FF /* mask of all user-settable VSprite-flags */
#define VSPRITE &H0001 /* set if VSprite, clear if Bob */
#define SAVEBACK &H0002 /* set if background is to be saved/restored */
#define OVERLAY &H0004 /* set to mask image of Bob onto background */
#define MUSTDRAW &H0008 /* set if VSprite absolutely must be drawn */
/* system-set VSprite flags: */
#define BACKSAVED &H0100 /* this Bob's background has been saved */
#define BOBUPDATE &H0200 /* temporary flag, useless to outside world */
#define GELGONE &H0400 /* set if gel is completely clipped (offscreen) */
#define VSOVERFLOW &H0800 /* VSprite overflow (if MUSTDRAW set we draw!) */
/* Bob flags */
/* these are the user flag bits */
#define BUSERFLAGS &H00FF /* mask of all user-settable Bob-flags */
#define SAVEBOB &H0001 /* set to not erase Bob */
#define BOBISCOMP &H0002 /* set to identify Bob as AnimComp */
/* these are the system flag bits */
#define BWAITING &H0100 /* set while Bob is waiting on 'after' */
#define BDRAWN &H0200 /* set when Bob is drawn this DrawG pass*/
#define BOBSAWAY &H0400 /* set to initiate removal of Bob */
#define BOBNIX &H0800 /* set when Bob is completely removed */
#define SAVEPRESERVE &H1000 /* for back-restore during double-buffer*/
#define OUTSTEP &H2000 /* for double-clearing if double-buffer */
/* defines for the animation procedures */
#define ANFRACSIZE 6
#define ANIMHALF &H0020
#define RINGTRIGGER &H0001
/* UserStuff definitions
* the user can define these to be a single variable or a sub-structure
* if undefined by the user, the system turns these into innocuous variables
* see the manual for a thorough definition of the UserStuff definitions
*
*/
#ifndef VUserStuff /* VSprite user stuff */
#define VUserStuff SHORTINT
#endif
#ifndef BUserStuff /* Bob user stuff */
#define BUserStuff SHORTINT
#endif
#ifndef AUserStuff /* AnimOb user stuff */
#define AUserStuff SHORTINT
#endif
/*********************** GEL STRUCTURES ***********************************/
STRUCT VSprite
/* --------------------- SYSTEM VARIABLES ------------------------------- */
/* GEL linked list forward/backward pointers sorted by y, x value */
VSpritePtr NextVSprite
VSpritePtr PrevVSprite
/* GEL draw list constructed in the order the Bobs are actually drawn, then
* list is copied to clear list
* must be here in VSprite for system boundary detection
*/
VSpritePtr DrawPath /* pointer of overlay drawing */
VSpritePtr ClearPath /* pointer for overlay clearing */
/* the VSprite positions are defined in (y, x) order to make sorting
* sorting easier, since (y, x) as a LONGINT integer
*/
SHORTINT OldY
SHORTINT OldX /* previous position */
/* --------------------- COMMON VARIABLES --------------------------------- */
SHORTINT Flags /* VSprite flags */
/* --------------------- USER VARIABLES ----------------------------------- */
/* the VSprite positions are defined in (y, x) order to make sorting
* sorting easier, since (y, x) as a LONGINT integer
*/
SHORTINT Y
SHORTINT X /* screen position */
SHORTINT Height
SHORTINT _Width /* number of words per row of image data */
SHORTINT Depth /* number of planes of data */
SHORTINT MeMask /* which types can collide with this VSprite*/
SHORTINT HitMask /* which types this VSprite can collide with*/
ADDRESS ImageData /* pointer to VSprite image */
/* borderLine is the one-dimensional logical OR of all
* the VSprite bits, used for fast collision detection of edge
*/
ADDRESS BorderLine /* logical OR of all VSprite bits */
ADDRESS CollMask /* similar to above except this is a matrix */
/* pointer to this VSprite's color definitions (not used by Bobs) */
ADDRESS SprColors
BobPtr VSBob /* points home if this VSprite is part of
a Bob */
/* planePick flag: set bit selects a plane from image, clear bit selects
* use of shadow mask for that plane
* OnOff flag: if using shadow mask to fill plane, this bit (corresponding
* to bit in planePick) describes whether to fill with 0's or 1's
* There are two uses for these flags:
* - if this is the VSprite of a Bob, these flags describe how the Bob
* is to be drawn into memory
* - if this is a simple VSprite and the user intends on setting the
* MUSTDRAW flag of the VSprite, these flags must be set too to describe
* which color registers the user wants for the image
*/
BYTE PlanePick
BYTE PlaneOnOff
VUserStuff VUserExt /* user definable: see note above */
END STRUCT
STRUCT Bob
/* blitter-objects */
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
SHORTINT Flags /* general purpose flags (see definitions below) */
/* --------------------- USER VARIABLES ----------------------------------- */
ADDRESS SaveBuffer /* pointer to the buffer for background save */
/* used by Bobs for "cookie-cutting" and multi-plane masking */
ADDRESS ImageShadow
/* pointer to BOBs for sequenced drawing of Bobs
* for correct overlaying of multiple component animations
*/
BobPtr Before /* draw this Bob before Bob pointed to by before */
BobPtr After /* draw this Bob after Bob pointed to by after */
VSpritePtr BobVSprite /* this Bob's VSprite definition */
AnimCompPtr BobComp /* pointer to this Bob's AnimComp def */
DBufPacketPtr DBuffer /* pointer to this Bob's dBuf packet */
BUserStuff BUserExt /* Bob user extension */
END STRUCT
STRUCT AnimComp
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
SHORTINT Flags /* AnimComp flags for system & user */
/* timer defines how LONGINT to keep this component active:
* if set non-zero, timer decrements to zero then switches to nextSeq
* if set to zero, AnimComp never switches
*/
SHORTINT _Timer
/* --------------------- USER VARIABLES ----------------------------------- */
/* initial value for timer when the AnimComp is activated by the system */
SHORTINT TimeSet
/* pointer to next and previous components of animation object */
AnimCompPtr NextComp
AnimCompPtr PrevComp
/* pointer to component component definition of next image in sequence */
AnimCompPtr NextSeq
AnimCompPtr PrevSeq
ADDRESS AnimCRoutine /* address of special animation procedure */
SHORTINT YTrans /* initial y translation (if this is a component) */
SHORTINT XTrans /* initial x translation (if this is a component) */
AnimObPtr HeadOb
BobPtr AnimBob
END STRUCT
STRUCT AnimOb
/* --------------------- SYSTEM VARIABLES --------------------------------- */
AnimObPtr NextOb
AnimObPtr PrevOb
/* number of calls to Animate this AnimOb has endured */
LONGINT Clock
SHORTINT AnOldY
SHORTINT AnOldX /* old y, x coordinates */
/* --------------------- COMMON VARIABLES --------------------------------- */
SHORTINT AnY
SHORTINT AnX /* y, x coordinates of the AnimOb */
/* --------------------- USER VARIABLES ----------------------------------- */
SHORTINT YVel
SHORTINT XVel /* velocities of this object */
SHORTINT YAccel
SHORTINT XAccel /* accelerations of this object */
SHORTINT RingYTrans
SHORTINT RingXTrans /* ring translation values */
ADDRESS AnimORoutine /* address of special animation
procedure */
AnimCompPtr HeadComp /* pointer to first component */
AUserStuff AUserExt /* AnimOb user extension */
END STRUCT
/* dBufPacket defines the values needed to be saved across buffer to buffer
* when in double-buffer mode
*/
STRUCT DBufPacket
SHORTINT BufY
SHORTINT BufX /* save the other buffers screen coordinates */
VSpritePtr BufPath /* carry the draw path over the gap */
/* these pointers must be filled in by the user */
/* pointer to other buffer's background save buffer */
ADDRESS BufBuffer
END STRUCT
/* ************************************************************************ */
/* these are GEL functions that are currently simple enough to exist as a
* definition. It should not be assumed that this will always be the case
*/
/*
#define InitAnimate(animKey) { *(animKey) = NULL }
#define RemBob(b) {(b)->Flags |= BOBSAWAY }
*/
/* ************************************************************************ */
#define B2NORM 0
#define B2SWAP 1
#define B2BOBBER 2
/* ************************************************************************ */
/* a structure to contain the 16 collision procedure addresses */
STRUCT collTable
STRING collPtrs SIZE 64 /* 16*SIZEOF(ADDRESS) */
END STRUCT
#endif /* GRAPHICS_GELS_H */